疯癫的算法:徐文长与他未完成的代码
一种被系统判定为错误的理想——它不是按部就班的成功路径,而是一段不断报错、不断崩溃,却始终拒绝停止运行的代码。在所有人都追求“正常运行”的时代,我要带你们认识一个被科举制度标记为“不合格”、被社会诊断为“疯癫”、却用自己崩坏的生命写下明代最动人程序的天才。
他是徐渭,字文长,号青藤老人。四百年前的画家、书法家、诗人、戏剧家。同时也是一个九次科举不第的失败者,一个杀妻入狱的罪犯,一个晚年靠卖画为生、最后贫困而死的疯癫老人。今天,我想通过他生命中三个“错误”的代码片段,分享三条关于理想如何在系统性的否定中,找到自己独特运行逻辑的启示。
第一个错误:当你是多线程天才,而系统只接受单线程输入
徐文长生在1521年的浙江绍兴。六岁能诗,九岁作文,十岁仿扬雄《解嘲》作《释毁》,被称为神童。二十岁时,他已经是当时罕见的“全栈开发者”——精通诗文、书画、戏曲、军事谋略。
但问题来了:他面对的是一个只接受单一格式输入的系统——科举考试。
明朝的科举是个严格的编译器,只接受八股文这种特定格式的代码。你的代码再有创意,如果不符合它的语法规则,就会被直接判为错误。徐文长试了九次,从二十岁考到四十一岁,始终无法通过。
他最早的觉醒就发生在这里:他意识到自己是一个多线程、多模块的复杂程序,而科举系统只允许运行最简单的命令行。
更讽刺的是,当他在科举考场不断碰壁时,他的才华在其他领域却大放异彩:
他被浙闽总督胡宗宪聘为幕僚,参与抗倭战争的战略谋划,屡出奇计。
他创作的《四声猿》杂剧,开明代戏曲创新之先声。
他的书画开始形成独特的“青藤画派”,泼墨大写意,前无古人。
这就是第一个“错误”的真相:不是他的代码有错,而是评估系统过于狭隘。 当他无法在科举这个“主线程”上运行时,他开始并行启动其他线程——军事、艺术、文学。每个线程都运行得异常出色。
这给我们第一个启示:当你被某个系统反复判定为“不合格”时,是否想过问题可能不在你的代码,而在系统的编译器? 徐文长的经历提醒我们,真正的天才往往是多模块、跨领域的,而僵化的评估体系会把这些丰富的可能性误判为错误。你的理想,是否也被某个单一的评判标准所束缚?你是否敢于在你真正擅长的“其他线程”上,投入并行的计算资源?
第二个错误:在系统彻底崩溃时,重写底层的绘图库
1565年,胡宗宪被弹劾下狱,徐文长失去依靠。次年,他因怀疑继室张氏不忠而将其杀死,被判入狱。在狱中六年,他经历了人生的彻底崩溃。
正是在这最黑暗的牢房里,他完成了艺术上最革命性的突破——他重写了中国画的底层绘图逻辑。
入狱前的徐文长,画风虽有才气,仍属传统范畴。狱中七年,没有颜料,只有纸墨;没有自由,只有四壁。在这种极端环境下,他的绘画开始发生质变:
他发明了“泼墨大写意”,用整碗墨汁倾泻在纸上,形成自然流淌的墨韵,再用寥寥数笔勾勒形象。
他打破了“形似”的传统,追求“神似”与“意到”。他说:“不求形似求生韵,根拔皆吾五指裁。”
他将书法笔法完全融入绘画,书画同源的观念在他这里真正实现。
最著名的《墨葡萄图》题诗:“半生落魄已成翁,独立书斋啸晚风。笔底明珠无处卖,闲抛闲掷野藤中。” 这里的“明珠”既是画上的葡萄,也是他被时代抛弃的才华。
这是第二个“错误”的深层逻辑:当外部世界完全拒绝你时,正是你重写内部算法的最佳时机。 监狱剥夺了徐文长的一切,却也给了他无人干扰的编译环境。他的疯癫,某种意义上是对外部世界逻辑的彻底拒绝,从而专注于构建自己内在的美学系统。
这给予我们第二个启示:你的创造力是否总在舒适的环境中运行? 徐文长的狱中突破告诉我们,有时最激进的创新发生在最不自由的条件下。当你失去所有外部资源时,你才会被迫深入自己的底层代码库,重构最核心的算法。你的理想,是否也包含这种“在限制中创造自由”的能力?
第三个错误:用“不完美”的运行日志,覆盖“完美”的伪代码
徐文长晚年出狱后,真正的痛苦开始了。他清醒地认识到:社会永远不会接受他的运行方式。
他继续创作,但画作卖不出去;他继续写诗,但无人理解;他继续研究戏曲,但被视为怪异。他的疯癫日益严重——曾用斧头砍自己的头,用长钉刺入耳朵,九次自杀未遂。最后二十年,他靠卖画为生,却常因不满买家而将画撕毁。
正是在这种看似完全失败的运行状态中,他留下了最宝贵的遗产:他证明了“不完美”的运行过程,比“完美”的伪代码更有价值。
传统文人画追求的是“完美”——完美的构图、完美的笔墨、完美的意境。徐文长的画却是“不完美”的:墨汁泼洒的偶然、笔触的狂放、构图的失衡。但这种不完美是真实的运行日志,记录了一个灵魂在时代重压下的真实状态。
他的书法也是如此——打破传统章法,字与字挤压碰撞,行与行纠缠不清。郑板桥曾刻印“青藤门下走狗”,齐白石说“恨不生三百年前,为青藤磨墨理纸”。他们崇拜的不是完美的徐渭,而是那个敢于暴露自己所有运行错误的徐渭。
这引向最后一个关于真实性的启示:你是要运行一段看起来完美的、但实际是伪装的代码,还是敢于输出包含所有调试信息的真实运行日志? 徐文长选择了后者。他的疯癫、他的失败、他的痛苦,全部成为他艺术输出的组成部分。他的理想,本质上是一种极致的真实——即使这种真实被系统判定为错误、为疯癫。
编译你自己的“非标准”人生
朋友们,徐文长的一生,是一个持续报错但从未停止运行的程序:
编译器错误:科举系统无法编译他的多线程才华
运行时错误:社会系统无法运行他的复杂逻辑
内存泄漏:他的情感与才思过度消耗,导致系统崩溃
但在我们今天的视角看,他的每个“错误”,都是对单一价值系统的成功逃逸。
在我们这个比明朝科举更复杂、但本质上同样崇尚“标准化运行”的时代,徐文长像一面破碎但诚实的镜子。他问我们:
当你所处的系统要求你成为单线程、标准化的程序时,你是否还有勇气保留自己的多模块架构?
当你遭遇人生的“运行时错误”甚至“系统崩溃”时,你是否能像徐文长在狱中那样,利用这个时机重写自己的底层算法?
你是要追求一个在他人评判标准下“完美”但失真的运行结果,还是要输出包含自己所有调试信息、哪怕看起来“不完美”的真实运行日志?
徐文长的艺术告诉我们:真正的创新往往发生在语法错误的地方,真正的深度往往藏在系统崩溃的瞬间,真正的伟大往往是被当代标记为“失败”的运行过程。
你们每个人都有自己的“非标准”部分——那些不符合主流期待的兴趣、那些不被理解的选择、那些被视为“错误”的特质。
愿你们能像徐文长对待他的多线程才华那样,珍视自己的“非标准”代码模块。
去运行那些可能报错但真实的程序。
去编译那些不符合标准语法的创新。
去输出那些包含调试信息的完整日志。
因为四百年后人们记住的徐文长,不是那个试图通过科举的标准化考生,而是那个用泼墨大写意重绘了美学疆域的疯子程序员。他的理想,就是用自己充满错误但绝对真实的运行日志,覆盖了一个时代虚伪的完美伪代码。
在这个追求高效、标准、无错误的时代,或许我们需要一点徐文长式的“疯癫算法”——敢于运行非标准代码,敢于暴露运行错误,敢于在系统崩溃的地方重新编译自己。
因为所有伟大的更新版本,都始于某个“错误”的分支。